package com.promise.jokerdream.work


/**
 * 工作执行结果
 */
sealed class WorkResult {
    /**
     * 执行成功
     */
    object Success : WorkResult()
    
    /**
     * 执行失败
     */
    data class Failure(val error: Throwable, val message: String? = error.message ?: "未知错误") : WorkResult()
    
    /**
     * 执行被取消
     */
    object Cancelled : WorkResult()
}

interface IWork {
    // 该工作是哪个用户的（方便多号同时执行）
    val uin: String

    // 工作名称
    val name: String
    
    // 工作优先级 (1-10，数字越小优先级越高)
    val priority: Int

    // 是否为活动类工作，如果是需要检查是否在活动内
    val isActWork: Boolean
    
    // 执行工作
    suspend fun executeWork(): WorkResult
}